perm filename NTS.FAI[NEW,LCS]3 blob sn#325375 filedate 1977-12-26 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE NTS
C00030 ENDMK
C⊗;
	TITLE NTS
	ENTRY NTS,STAFF
	EXTERNAL .COMM.,ALF,POSI,AMOD,CENTX,RDRAW,PLTR,STF,EXTRA
	EXTERNAL LINX,DRWNT,DAT,NOIR,TAIL,LINES,RHORZ
	INTERNAL WIDTH   ; NOTE WIDTH IN BASIC UNITS
	;SUBROUTINE NOTWRT
	;IMPLICIT INTEGER(A-Q,S-Z)
	;COMMON/DL/IXRX,M,AA /FONT/JFONT 
	;COMMON/SCM/V(78),ISCR,LCNT,RSTF,LIST(200),REND
	;COMMON/DAT/RACNT(65),RDOT(17),XAC(7),RNOTE(22),RACCI(22),NACCI(3)
	;REAL DIS,CENTR,POS,STFF
	;COMMON /STF/RSTFAC(0/7),RSTJ2
	;COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
	;COMMON/PLTR/PLT,RHT,DIS /POSI/STFF(0/7),JJ2,POS
;  ITEMS IN FOLLOWING COMMON BLOCK ARE USED IN 'TAILS' AND 'FERM'
	;COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
	;1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ,
	;1 PUNCT,JY,RJ
	;EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R4,RJQ(2))
	;1,(R6,RJQ(4)),(J7,JQ(5)),(J8,JQ(6)),(J9,JQ(7)),(J10,JQ(8)),
;	1(J11,JQ(9)),(J6,JQ(4)),(R5,RJQ(3)),(R11,RJQ(9)),(STEM,JQ(20))
;	1,(R8,RJQ(6)),(R7,RJQ(5)),(RX,JRX),(RJZ,RJQ(20)),(R3,RJQ(1))
;	1,(RX4,JQ(19)),(STEM,JQ(20))

	DEFINE J10 <.COMM.+=31>
WIDTH:	 14.54 
NTS:	0	;  NOTES****
	MOVE .COMM.+=26		;STEM=J5/10
	IDIVI =10
	MOVEM .COMM.+=43	; STEM
	MOVM 7,.COMM.+=27	; (J6)  11	JY=0
	CAIN 7,=30	;IF(JY.EQ.30)JY=0  30 IS USED IN NOTBMS & RHYTH.
	SETZ 7,
	SKIPN .COMM.+=12	;IF R11.NE.0 PUT A -1 (INTEGER) INTO R6
	JRST .+3		;SORT IT OUT IN NTSB
	SETOM .COMM.+7 ;*******EVENTUALLY DO AWAY WITH R6-R11 COMPATIBILITY
	JRST N1
	SKIPN .COMM.+7		;IF(R6.EQ.0)GO TO 1015
	JRST N1			;JY=IABS(J6)
	JSA 16,AMOD		;R6=ABS(AMOD(R6,1.0))*10.
	JUMP .COMM.+7
	JUMP [1.0]
	FMPR [10.0]
	MOVMM .COMM.+7		; R6     L IS AC 14 ******
N1:	MOVM 14,.COMM.+=25     ;R6 WILL HAVE ACCENT CODE # (.7=DOT, ETC.)
;;		;  L   1015	L=IABS(J4)
	MOVEM 7,ALF+=70		;PUT AWAY JY IN RIGHT PLACE FOR NOTSUB.
	MOVE .COMM.+4	;RJAC=R3
	MOVEM ALF+=61
	MOVE 13,[2.0]	;   TO SAVE POS. OF NOTE FOR ACCENT
	FMPR 13,STF+10		; 13 IS RZTM=2.*RSTJ2
N1010:	SKIPLE J10		;IF(J10.GT.0)GO TO N3016
	JRST N3016
	CAIGE 14,=80		;1010	 IF(L.LT.80)GO TO 1013
	JRST N1013		;MINIS= 80→179  OR -100→-120
;;	MOVE 2,.COMM.+5		;NEXT CHECKS FOR >80 NUMBS.
;;	CAMGE 2,[-20.0]		;IF(R4.LT.-20)R4=R4+100
;;	FADR 2,[100.0]		; CATCHES THINGS LIKE R4=-95
;;	CAMGE 2,[80.0]	;*******ALL THIS IS NOW IN CENTX(LOOP.FAI)***
;;	JRST .+3
;;	FSBR 2,[100.0]
;;	MOVEM 2,.COMM.+5	;PUT THE RIGHT THING INTO R4
	CAIGE 14,=180		;IF(L.LT.180)GO TO 1012
	JRST N1012		;DIAMOND NTS=180→279
	SETZ 13,		;RZTM=0
	CAIL 14,=280		;IF(L.GE.280)GO TO 1014
	JRST N1014		;X NTS=280→379
	MOVEI 12,10		; 12  IS   KL=8
	MOVE 11,[12.0]		;  11  IS  RG=12.0
	JRST N1013		;  FOR DIAMOND NOTES.
N1014:	CAIL 14,=380		;GO TO 1013	STEM ONLY NTS=380→479
	JRST N1016		;1014	IF(L.GE.380)GO TO 1016
	MOVE 10,[7.0]		; 10  IS  RJX=RMINI*7
	FMPR 10,ALF+=49		; *RMINI (+49)
	MOVEI 12,=13		;  FOR "X" NOTES.
	MOVE 11,[16.0]		;KL=13
	MOVE 2,.COMM.+=43	; STEM      RG=16.
	CAIN 2,2		;RB=CENTR+RJX
	MOVNS 10		;IF(STEM.EQ.2)RB=CENTR-RJX
	FADR 10,.COMM.+2	; 10 IS RB
	JRST N1013		;GO TO 1013
;;N1016:	CAIGE 14,=1000	;1016	IF(L.LT.1000.OR.L.GE.10000)GO TO 1011
N1016:	CAIGE 14,[=10000]
	JRST N1019		;IF(L.GE.10000)GO TO 1013
	JRST N1013
;;	CAML 14,[=10000]
;;	JRST N1013
;;N3016:	MOVE .COMM.+=43		;IF(STEM.EQ.2)GO TO N2016
;;	CAIN  2    
;;	JRST N2016	;STEM DIRECTION IS REVERSED ON OTHER STAFF!!!!!
;;	JUMPE N2016+1		;IF(STEM.EQ.0)GO TO N2016+1
;;	AOS  .COMM.+=43		;STEM=STEM+1
;;	SKIPA
;;N2016:	SOS .COMM.+=43		;STEM=STEM-1
;;;N3016:	SETO 12,		;KL=-1
N3016:	MOVE 2,.COMM.+3		;POS=STFF(J2+1)  VERT. POS OF STAFF ABOVE
	MOVE J10		;IF(J10.EQ.1)KL=-KL
	CAIE 2
	SUBI 2,2		; CHANGE TO J2-1  IF STAFF BELOW
;%%%%%	MOVE 2,POSI+4(2)	; GET POS.
	MOVE 2,POSI+1(2)	; GET POS.
	MOVEM 2,POSI+=9		; POS
;;;	MOVNS 12
;PUTS NOTE ON STF ABOVE(P10=2) OR BELOW(=1)-NEXT FIND POS ON OTHER STF
;;;	MOVE 2,.COMM.+3		;RB=(STFF(J2-KL)-STFF(J2))/RST7
;;;	ADDI 2,3		; STF#+3(+1)
;;;	MOVN 3,POSI(2)
;;;	SUB 2,12
;;;	FADR 3,POSI(2)
;;;	FDVR 3,ALF+=46		;  RB
;;;	FADRM 3,.COMM.+5	;R4=R4+RB
	JSA 16,CENTX		;CALL CENTX
;;	SETOM .COMM.+=30	;J9=-1
;  SUPRESSES LEDGER LINES     -- CAN'T USE LEDGER LINES ON OTHER STAFF!
	JRST N1010+2		;GO TO 1010  GO BACK FOR P4 FEATURES
N1019:	CAIL 14,=480		;1011	IF(L.LT.10000)GO TO 1019
	JRST N1017		;GO TO 1013
	MOVE 10,.COMM.+=13	; R12  1019	IF(L.GE.480)GO TO 1017
	FMPR 10,ALF+=46
	FADR 10,.COMM.+2	;RB=CENTR+R12*RST7
	JRST N1013     ;+400 = NO NOTE HEAD.  P12 CAN ADJUST SOURCE OF STEM.
N1017:	JSA 16,EXTRA		;GO TO 1013
	SETOM .COMM.+=43	;1017	RG=R4
	JRA 16,(16)		;CALL EXTRA
;  'EXTRA' IS FOR USER-ADDED NOTE AND REST SHAPES. P4+ 480→ (OR 600 TOO?)
;  480 IS USED SO NOTES CAN BE AT 500-19
	;RETURN
N1012:	MOVE 2,STF+10		;1012	RMINI=.6*RSTJ2
	FMPR 2,[0.6]
	MOVEM 2,ALF+=49		; RMINI
;  FOR RMINI NOTES
;;** DONE IN CENTX *** 1017	;R4=AMOD(R4,100.)
;  FOR MINI TAILS AND ACCIS. ETC.
N1013:	MOVE 2,.COMM.+5		;1013	J4=R4
	MOVEM 2,.COMM.+=42	; JQ(19) IS EQUIV. TO RX4
	MOVEM 2,.COMM.+=23	;  RJZ
        KIFIX 2,2
	MOVEM 2,.COMM.+=25	;  J4    RJZ=R4
;  RJZ FOR FLAT, #, NAT.   RX4 FOR TR., HARM, ETC.
	MOVEM 10,ALF+=55		; RB
	MOVEM 11,ALF+=69	;  RG     IF(JY.LT.10)GO TO 2221
	MOVEM 12,ALF+=60	;  KL
	MOVEM 13,ALF+=66	;  RZTM
	MOVEM 14,ALF+=63	; PUT AWAY L FOR NOTWRT
	CAIGE 7,=10
	JRST N2221
	MOVE  4,WIDTH  	   ;**** NO LONGER USED→IF(JY.GE.30)GO TO 2221
; P6 FOR HOMING TO RIGHT(10) OR LEFT(20) OF STEM(10=UP, 20=DOWN)
; P6<0 = WHITE NOTE
	SKIPGE .COMM.+=27	;  J6      RQ=RSTM
	MOVE 4,[16.2]		;IF(J6)RQ=16.2
; GETS WIDTH OF NOTE DISPLACEMENT
	CAIN 7,=20		;IF(JY.EQ.20)RQ=-RQ
	MOVNS 4
	FMPR 4,ALF+=49		;R3=R3+RQ*RMINI
	FADRM 4,.COMM.+4	;  R3
N2221:	CAIG 2,1		;2221	IF(J4.LE.1)GO TO 322
	JRST N322
	CAIL 2,=13		;IF(J4.LT.13)GO TO 1121
N322:	SKIPGE .COMM.+=30	;322	IF(J9)GO TO 1121
	JRST N1121  ;   ARE THERE LEDGER LINES?  P9=-1 SUPPRESSES THEM.
	MOVE 3,2	;J12=(J4+1)/2-6
	AOJ 3,
	IDIVI 3,2		; (AC4 NOT USED YET)
	SUBI 3,6	; 3 IS J12
	MOVEM 3,.COMM.+=33
	JUMPGE 3,.+5	;IF(J12)J12=-((3-J4)/2)
	MOVE 3,2
	SUBI 3,3
	IDIVI 3,2
	MOVEM 3,.COMM.+=33	; J12  ;  FOR LEDGER LINES
	MOVN 4,ALF+=49		;RJW=R3-7.*RMINI
	FMPR 4,[7.0]
	FADR 4,.COMM.+4
	MOVEM 4,ALF+=56		; RJW
	MOVE 5,ALF+=49		;RZ=R3+20.*RMINI
	FMPR 5,[20.0]
	FADR 5,.COMM.+4		;  RZ
	MOVEM 5,ALF+=57		;  RZ
	JUMPL 3,N71		;IF(J12)GO TO 71
	MOVEI 6,=13		;JX=J12
	MOVEM 3,ALF+=58		;  JX   JRX=13
	JRST N711		;GO TO 711
N71:	MOVEI 6,2		;71	JX=-J12
	IMUL 6,3		;JRX=J12*2+3
	ADDI 6,3
	MOVNM 3,ALF+=58		; JX
N711:	MOVN 7,[18.0]		;711	RX=POS-18*RSTJ2+RST7*JRX
	FMPR 7,STF+10
	FLTR 6,6    		; FLOAT IT
	FMPR 6,ALF+=46
	FADR 6,7
	FADR 6,POSI+=9		;IF(J6)RZ=RZ+2*RMINI
	MOVEM 6,ALF+=52		;  RX IS 6
	SKIPL .COMM.+=27
	JRST N126
	MOVE 2,ALF+=49		; RMINI
	FMPR 2,[2.0]
	FADRM 2,ALF+=57		;  RZ
N126:	JSA 16,LINX		;126	CALL LINX(RJW,RX,RZ,RX)
	JUMP ALF+=56
	JUMP ALF+=52
	JUMP ALF+=57
	JUMP ALF+=52
	MOVN 2,PLTR		;IF(PLT.NE.-2)GO TO 1126
	CAIE 2,2
	JRST N1126
	MOVN 2,[1.0]		;RJY=RX-1./RHT
	FDVR 2,PLTR+1
	FADR 2,ALF+=52		;  RX
	MOVEM 2,ALF+=54		;  RJY
	JSA 16,LINX		;CALL LINX(RJW,RJY,RZ,RJY)
	JUMP ALF+=56
	JUMP ALF+=54
	JUMP ALF+=57
	JUMP ALF+=54
N1126:	MOVE 3,ALF+=58		;  JX   1126	IF(JX.EQ.1)GO TO 1122
	CAIN 3,1
	JRST N1122
	MOVE 2,STF+10		;RX=RX+RSTJ2*14.
	FMPR 2,[14.0]
	FADRM 2,ALF+=52		;  RX
	SOS ALF+=58		;JX=JX-1
	JRST N126		;GO TO 126
N1122:	SETOM .COMM.+=30	;1122	J9=-1  ;  IF J6≠0 NOTE IS FILLED IN
		;   1121	IF(L.GE.400)GO TO 123 ;  JUMP IF NO NOTE HEAD
N1121:	CAIL 14,=400		;IF(J6)GO TO 1322
	JRST N123
	SKIPGE .COMM.+=27	; J6
	JRST N1322
	CAIGE 14,=200		;IF(L.LT.200)GO TO 125
	JRST N125
N1322:	CAIL 14,=200		;1322	IF(L.GE.200)GO TO 1253
	JRST N1253  ;  FOR DIAMOND AND X NOTES.
	MOVEI 12,1		;KL=1
	MOVE 11,[7.0]		;RG=7.  ;  FOR WHITE NOTES ON DPY.
	MOVE .COMM.+=28		;JSA 16,MOD		;WHOLE=MOD(J7,10)
	IDIVI =10		;JUMP .COMM.+=28
	MOVEM 1,ALF+=71		;JUMP [=10]	;  WHOLE
	JUMPE 1,N2122		;IF(WHOLE.EQ.0)GO TO 2122
	SETZM .COMM.+=43  ;STEM=0 ;FOR VARIOUS AUTOMATIC FEATURES IN 'SCORE' SECTION.
	SETZM .COMM.+=28	;J7=0
	JSA 16,AMOD		;R5=AMOD(R5,10.)
	JUMP .COMM.+6
	JUMP [10.0]  
	MOVEM .COMM.+6
	KIFIX 0,0
	MOVEM .COMM.+=26		;J5=R5
	SKIPGE PLTR		;IF(PLT)GO TO 2121
	JRST N2121
	MOVE 2,ALF+=71		;IF(WHOLE.NE.2)GO TO 1253
	CAIE 2,2
	JRST N1253		;RQ=POS-18.*RSTJ2+RST7*(R4-1.)
	MOVN [18.0]
	FMPR STF+10
	MOVE 1,.COMM.+5		; R4
	FSBR 1,[1.0]
	FMPR 1,ALF+=46		; RST7
	FADR 1,0
	FADR 1,POSI+=9		; POS
	MOVEM 1,ALF+=64		; RQ
	FADR 1,ALF+=46		;CALL LINX(R3,RQ,R3,RQ+RST7+RST7)
	FADR 1,ALF+=46	
	MOVEM 1,ALF+=65		; (RH)
	JSA 16,LINX
	JUMP .COMM.+4
	JUMP ALF+=64
	JUMP .COMM.+4		;PUT IN LINE TO SHOW DBL WHOLE ON SCREEN (P7=2)
	JUMP ALF+=65
N2122:	SKIPL PLTR		;2122	IF(PLT.GE.0)GO TO 1253
	JRST N1253
N2121:	CAIL 14,=200		;2121	IF(L.GE.200)GO TO 1253
	JRST N1253
	MOVE ALF+=71		;J5=15+WHOLE
	ADDI =15
	MOVEM .COMM.+=26 ;IF WHOLE=1, THEN WHOLE NOTE SHAPE INSTEAD OF HALF. (P7=1)
	MOVE STF+10		;RG=RSTJ2
	MOVEM ALF+=59		;  RG  FOR NOW ;FIX THIS SOME DAY↓↓  SEE 1342+1!
; THESE NOTES ARE IN CLEF1.  1/2=13, WHOLE=14
	MOVE .COMM.+=25		;JX4=J4
	MOVEM ALF+=68		; JX4
	MOVE .COMM.+10		;RQ=R7
	MOVEM ALF+=64		;  RQ
	JSA 16,DRWNT		; CALL DRWNT ; SAVE IT FOR DOTS
	MOVE ALF+=59		;R7=RQ
	MOVEM STF+10
	MOVE ALF+=68		;J4=JX4
	MOVEM .COMM.+=25	;  GET 'EM BACK
	MOVE ALF+=64		;RSTJ2=RG
	MOVEM .COMM.+10		; (R7)  ;DRAWS GOOD NOTES ON PLOTTER, NOT ON DPY
	JRST N123		;GO TO 123
N1251:	JSA 16,NOIR		;1251	CALL NOIR(RMINI)
	JUMP ALF+=49	;  FOR QUARTER NOTES ON PLOTTER.
	JRST N123	;GO TO 123

N125:	MOVEM 10,ALF+=55	; SAVE RB 
	SKIPGE PLTR		;125	IF(PLT)GO TO 1251
	JRST N1251
	MOVE 11,[22.0]		;RG=22
	MOVEI 12,=17		;KL=17
N1253:	MOVEM 12,ALF+=60   ;  ABOVE IS NEW NOTES ROUTINE
	MOVEI 0,1
	MOVEM STAFF		;FOR TRIPLE-THICK X NOTES, HARMONICS.
	MOVE .COMM.+4
	MOVEM ALF+=69		;RH=R3
	MOVEM 11,ALF+=59
NRDR:	JSA 16,RDRAW	;1253	CALL RDRAW(KL,RG,RNOTE,RMINI,RH,CENTR,RMINI)
	JUMP ALF+=60
	JUMP ALF+=59
	JUMP DAT+=89
	JUMP ALF+=49
	JUMP ALF+=69
	JUMP .COMM.+2
	JUMP ALF+=49 
	SKIPL STAFF		;IF(STAFF.LT.0)ALL DONE
	SKIPL PLTR		;IF(PLT.GE.0)GO TO 123
	JRST N123
	MOVE 12,ALF+=60		;IF(KL.EQ.8)GO TO 2253
	CAIN 12,=8
	JRST N2253
	CAIE 12,=13		;IF(KL.NE.13)GO TO 123
	JRST N123   ;  MAKE DBL THICK X AND DIAMOND NOTES
;;N2253:	MOVE .COMM.+4		;2253	RH=R3-1.0
;  MAKE TRIPLE THICK X AND DIAMOND NOTES
N2253:	MOVE ALF+=69 		;2253	RH=R3-1.0
	FSBR [1.0]
	MOVEM ALF+=69
; GO BACK FOR THIS   	;CALL RDRAW(KL,RG,RNOTE,RMINI,RH,CENTR,RMINI)
	SOS STAFF	;STAFF=STAFF-1
	JRST NRDR
N123:	MOVN 2,.COMM.+=26	;R5=R5-J5
	FLTR 2,2    
	FADRM 2,.COMM.+6
	SKIPN .COMM.+=43		;IF(STEM.EQ.0)RETURN
	JRA 16,(16)

	MOVE 10,ALF+=55		; PUT RB BACK INTO 10
	MOVE 14,ALF+=63		; GET BACK L
	CAIL 14,=300
	JRST N128
	MOVE 10,ALF+=66			; RZTM
	FADR 10,.COMM.+2   ;   RB    R5=STEPS TO LEFT FOR ACCID. (.1=1 STEP)
N128:	MOVE 5,.COMM.+=28		;JSA 16,MOD		
	IDIVI 5,=10		;JUMP .COMM.+=28		
	MOVEM 6,.COMM.+=28	;JUMP [=10]	;IF(STEM.EQ.0)GO TO 1242
				;IF(L.LT.300)RB=CENTR+RZTM
	SOJ 6,			; ≥300 IS FOR 'X' NOTES.
	IMULI 6,=14		;128	J7=MOD(J7,10)
	FLTR 6,6    		;RG=(J7-1)*14
	SKIPGE 6 		;IF(RG)RG=0
	SETZ 6,			; 6 IS RG
	MOVE 2,.COMM.+=9	;999 IS STANDARD (0) STEM LENGTH.
	CAME 2,[999.0]		;IF(R8.NE.999)GO TO 1751
	JRST N1751
 	SETZ 2,			;R8=0
	SETZ 15,		; 15  =  RH=0
	JRST N2751		;GO TO 2751
N1751:	CAMG 2,[999.0]		;1751	IF(R8.LT.999)GO TO 751
	JRST N751
	FSBR 2,[1000.0]		;R8=R8-1000.
	SETOM .COMM.+=11	;  R10=-1 TO MAKE GRACE NOTE SLASH
N751:	MOVE 15,2		;  1000+ PUTS SLASH ON NOTE STEM
	FMPR 15,ALF+=46		;15 IS RH  751	RH=R8*RST7
N2751:	MOVEM 2,.COMM.+=9	; R8
	MOVE .COMM.+=26		;JSA 16,MOD
	IDIVI =10		;JUMP .COMM.+=26 ;J5=MOD(J5,10)  ACCI NOW IN J5
	MOVEM 1,.COMM.+=26	;JUMP [=10]
	MOVE .COMM.+=43		;  STEM EXTENSIONS ARE BY NOTE #S
	CAIE 2			;2751	IF(STEM.NE.2)GO TO 1280
	JRST N1280
	MOVE 5,.COMM.+4		;RJX=R3
	FADR 6,[48.0]		;  FOR STEM DOWN (=2)
	MOVNS 6			;RG=-RG-48.
	MOVNS 15		;RH=-RH
;*** SEE AT N2751	MOVEI 14,=20		;L=20
	MOVN 4,ALF+=66		;  RZTM    RB=RB-RZTM*2
	FMPR 4,[2.0]		; FOR TILT OF ORDINARY NOTES (NOT X OR DIAMOND)
	FADR 10,4		; RB IS 10 (SEE 'WAY BACK)
	JRST N129		;GO TO 129
N1280:	MOVE 5,WIDTH  		;  NEXT IS FOR STEM UP.
	SKIPGE .COMM.+=27	;1280	RJX=RSTM
	MOVE 5,[16.2]		;IF(J6.LT.0)GET SPACE FOR HALF NOTE
N2322:	FMPR 5,ALF+=49		;2322	RJX=RJX*RMINI+R3
	FADR 5,.COMM.+4
	FADR 6,[48.0]		; 6 IS  RG=RG+48.
;*** SEE AT N2751	MOVEI 14,=10		;L=10
N129:	FMPR 6,ALF+=49		;129	RZ=CENTR+RH+RG*RMINI
	FADR 6,15
	FADR 6,.COMM.+2	
	MOVEM 6,ALF+=57
	MOVE 4,ALF+=49		;IF(RMINI.NE.RSTJ2)RJW=RJW*.6
	CAMN 4,STF+=8
	JRST .+4
	MOVE ALF+=56
	FMPR [0.6]
	MOVEM ALF+=56
	MOVEM 5,ALF+=53		; RJX
	MOVEM 10,ALF+=55	; RB 
	JSA 16,LINX		;CALL LINX(RJX,RB,RJX,RZ)
	JUMP ALF+=53
	JUMP ALF+=55
	JUMP ALF+=53
	JUMP ALF+=57
;****N227:	MOVN 14		;  RB HERE IS CENTR (FOR 'X' NOTES OR NOT)
;** SEE AT N2751***	ADDM .COMM.+=26		;227	J5=J5-L
N227:	SKIPG .COMM.+=28	;   J5 HAS ACCID. # NOW
	JRA 16,(16)		;IF(J7.LE.0)GO TO 1242
	MOVE [2.0]		;   JUMP IF NO TAILS
	FMPR ALF+=49		;RJW=2.*RMINI/RSTJ2
	FDVR STF+10
	MOVEM ALF+=56
	MOVE 3,[1.0]		;RA=1.
	MOVE .COMM.+=43	;  FOR VERT. SPACING OF MULTIPLE TAILS
	CAIE 2		;IF(STEM.NE.2)GO TO 1127
	JRST N1127
	MOVN .COMM.+=9		;R4=R4-3.7-R8
	FSBR [3.7]	; R4 IS USED IN SUBR. TAIL   - R8 IS STEM EXTENSION.
	FADRM .COMM.+5
	MOVNS ALF+=56		;RJW=-RJW
	JRST N127		;GO TO 127
N1127:	MOVE .COMM.+=9		;1127	R4=R4-2+R8
	FSBR [2.0]
	FADRM .COMM.+5
;  2 ABOVE AND 3.7 BEFORE ARE BECAUSE ORIG. POS. OF TAIL DRWING IS OFF.
	MOVNS 3			;RA=-RA
	SETZM .COMM.+=9		;R8=0    FOR SHIFT AT 246
N127:	MOVEM 3,ALF+=51		; RA
	JSA 16,TAIL		;127	CALL TAIL
	SOS .COMM.+=28		;1028	J7=J7-1
	SKIPN .COMM.+=28		;IF(J7.EQ.0)GO TO 327
	JRST N327
	MOVE ALF+=56		;R4=R4+RJW
	FADRM .COMM.+=5
	JRST N127+1	; GO TO 127 MOVES CENTR UP OR DOWN FOR NEXT TAIL
N327:	MOVE .COMM.+=5		;327	IF(R4.GE.RX4)RX4=R4+1
	CAMGE .COMM.+=42
	JRST .+3
	FADR [1.0]
	MOVEM .COMM.+=42	; FOR TRILLS, ETC.
	SKIPL .COMM.+=11	;IF(J10.GE.0)GO TO 1242
	JRA 16,(16)
	MOVN [19.0]		;RJY=RZ-19*RSTJ2
	FMPR STF+10
	FADR ALF+=57		; 0 IS RJY FOR NOW
	MOVN 2,[4.0]		;RZ=RZ-RSTJ2*4.
	FMPR 2,STF+10
	FADRM 2,ALF+=57
	SKIPGE ALF+=51		;IF(RA.LT.0)GO TO 1327
	JRST N1327		;  NEXT IS FOR STEM DOWN SLASH
	MOVE [23.0]		;RJY=RZ+23*RSTJ2
	FMPR STF+10
	FADR ALF+=57		; 0 IS RJY
	MOVE 2,ALF+=46		;RZ=RZ+RST7
	FADRM 2,ALF+=57
N1327:	MOVN 2,ALF+=46		;1327	RJX=RJX-RST7
	FADRM 2,ALF+=53
	MOVEM ALF+=54		; RJY
	MOVE [17.0]
	FMPR STF+10
	FADR ALF+=53
	MOVEM ALF+=71
	JSA 16,LINX		;CALL LINX(RJX,RJY,RJX+17.*RSTJ2,RZ)
	JUMP ALF+=53
	JUMP ALF+=54
	JUMP ALF+=71
	JUMP ALF+=57		;FOR SLASH ON GRACE NOTE TAIL
	JRA 16,(16)


;	REAL DIS,DISX,HGT,POS,CENTR,STFF,HGT1
;	COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)/BM/RA,RC,RJY
;	COMMON/POSI/STFF(0/7),JJ2,POS/PLTR/PLT,RHT,DIS
;	EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R5,RJQ(3))
;	1,(R6,RJQ(4)),(J7,JQ(5)),(J8,JQ(6)),(J9,JQ(7)),(J10,JQ(8))
;	1,(J11,JQ(9)),(J6,JQ(4)),(R9,RJQ(7)),(R8,RJQ(6)),(R3,RJQ(1))
;	1 ,(R7,RJQ(5)),(R4,RJQ(2)),(R9,RJQ(7)),(R10,RJQ(8)),(RX3,RJQ(20))
STAFF:	0		;100	RA=0
;  FOR STAFF LINES: 8, POS 1, HGT(0 TO 7), UP-DOWN(NT #S), 
;  P5=SIZE, P6=2ND POS., P7=(1=INVIS.), P8=SPACER, P9=INST. NAME
;  P6=SIZE FACTOR, IF P7≠0 STAFF IS INVIS. 
;  PLT =-2 MAKES HEAVY STAFF.(FOR XGP)
;   IF(R5.EQ.0)R5=RSTFAC(J2)
	MOVE 3,.COMM.+3		;  J2
	MOVE 2,.COMM.+6
	JUMPN 2,.+4
	MOVE 2,STF(3)	; TEMP. R5 IS 2
	SKIPN 2			;CALL NOZERO(R5)
	MOVE 2,[1.0]
	MOVEM 2,STF(3)	;RSTFAC(J2)=R5
	MOVE 4,.COMM.+5	;RX=(J2+3)*123-369.+AMOD(R4,100.)*7.*R5
	FMPR 4,[7.0]	;         %%%% -469
	FMPR 4,2
	MOVE 7,3
;;;	ADDI 7,3	; J2+3  NOW STAFF NUMS RUN FROM 0 TO 7
	IMULI 7,=123
	SUBI 7,=469	;%%%%%%%%%% WAS -396
	FLTR 7,7    
	FADR 7,4	;  7 IS RX
	MOVEM 7,POSI(3)	;STFF(J2)=RX
	MOVE 13,[3.0]		; RTF    RX=RX+RTF*R5
	FMPR 13,2
	FADR 13,7	; 13 IS RX
;  FOR RTF SEE DATA  	;13 IS RA	 THIS COMES DOWN AT STF69  RA=RX
;  FOR 2 PASS PLOTTING
	JSA 16,RHORZ		;RJ=RHORZ(R6)
	JUMP .COMM.+7
	SKIPN .COMM.+7
	MOVE [596.0]		;IF(R6.EQ.0)RJ=596
	MOVEM ALF+4		;  RJ
	FMPR 2,[14.0]		;R5=R5*14.
	MOVEM 2,.COMM.+6
	SKIPE .COMM.+11		;IF(R8.EQ.0)GO TO 68
	SKIPGE PLTR
	JRST STF68		;IF(PLT)GO TO 68
	MOVE 14,.COMM.+11	;RZ=RX+R8*167.
	FMPR 14,[167.0]
	FADR 14,13		; 13 IS RX   14 IS RZ
;  167 IS A MAGIC NUMBER!!  PUTS LINE ON DPY.
	JSA 16,LINX		;CALL LINX(R3,RZ,RJ,RZ)
	JUMP .COMM.+4
	JUMP 14
	JUMP ALF+4
	JUMP 14  ;  SHOWS WHERE NEXT STAFF 0 WILL BE.
STF68:	SKIPN .COMM.+=28	;68	IF(J7.EQ.0)GO TO 101
	JRST STF101
	SKIPE PLTR		;IF(PLT.EQ.0)CALL LINES(-596.,RX,3)
	JRA 16,(16)
	JSA 16,LINES
	[-596.0]
	13
	[3]    ;  TO ACTIVATE DPY BUFFER
	JRA 16,(16)		;RETURN
STF101:	MOVE 14,.COMM.+=25	;101	L=IABS(J4/100)
	IDIVI 14,=100		; AC 15 NOT USED
	MOVM 14
	SKIPN 14,		;IF(L.EQ.0)L=5
	MOVEI 14,5		; L IS 14
;  P4=0=STANDARD 5-LINE STAFF.  600=6 LINES, ETC.
	MOVE 11,ALF+4
	MOVEM 13,NTS
STF69:	SETZ 12,	; K 69	DO 6 K=1,L
STF1:	JSA 16,LINX
	JUMP 11			;RZ=RJ
	JUMP 13			;RW=R3
	JUMP .COMM.+4		;IF(K.EQ.2)GO TO 66
	JUMP 13			;IF(K.NE.4)GO TO 67
	EXCH 11,.COMM.+4	;66	CALL EXCH(RW,RZ)
	FADR 13,.COMM.+6	;67	CALL LINX(RZ,RX,RW,RX)
	AOJ 12,			;6	RX=RX+R5
	CAMGE 12,14
	JRST STF1
	MOVNI 2			;IF(RA.EQ.1000)RETURN
	CAMN PLTR			;IF(PLT.NE.-2)RETURN
	SKIPN NTS		;RX=RA-1./RHT
	JRA 16,(16)
	MOVN 13,[1.0]		;RA=1000
	FDVR 13,PLTR+1
	FADR 13,NTS
	SETZM NTS		;GO TO 69
	JRST STF69		;END
	END